import java.math.BigInteger;

public class MyBigDecimal {
    /**
     * 膨胀模式（intVal）
     * 一个包含整数部分的 BigInteger 对象，
     * 某个整数值本身很大，超出基本数据类型的表示范围
     * 带小数的值转为整数后值很大，超出基本数据类型的表示范围
     */
    private final BigInteger intVal;
    /**
     * 小数点右侧的位数。
     * 它表示小数的精度。
     */
    private final int scale;

    /**
     * 数值的精度。
     * 它指的是 BigDecimal 数值的总位数，包括整数部分和小数部分。
     */
    private transient int precision;
    /**
     * 缓存的字符串表示。
     * 当BigDecimal被转换为字符串时，会将其缓存起来，以提高性能。
     */
    private transient String stringCache;

    /**
     * 紧凑模式（intCompact）
     * 扩大成 long 型书数值后的值。
     */
    private final transient long intCompact;

    public MyBigDecimal(BigInteger intVal, int scale, int precision, String stringCache, long intCompact) {
        this.intVal = intVal;
        this.scale = scale;
        this.precision = precision;
        this.stringCache = stringCache;
        this.intCompact = intCompact;
    }

    public MyBigDecimal(BigInteger intVal, int scale, int precision, long intCompact) {
        this.intVal = intVal;
        this.scale = scale;
        this.precision = precision;
        this.intCompact = intCompact;
    }
}
